//
//  StrategyParameter.h
//  StrategyInspector
//
//  Created by jiro on 12/07/29.
//  Copyright 2012 jiro music. All rights reserved.
//

#import <Cocoa/Cocoa.h>

class StrategyParameter
{
public:

	enum Type
	{
		Type_Double,

		Type_String,

		Type_Date,
	};
public:

	virtual bool isMutable() const;

	virtual void nextValue( bool& isLast );
	
	virtual void initialize() = 0;

	virtual double getDoubleValue() const;
	virtual NSString* getStringValue() const;
	virtual NSDate* getDateValue() const;
	virtual double getDoubleValueStart() const;
	virtual NSDate* getDateValueStart() const;
	virtual double getDoubleValueEnd() const;
	virtual NSDate* getDateValueEnd() const;

	virtual void setDoubleValue( double value );
	virtual void setStringValue( NSString* s );
	virtual void setDateValue( NSDate* date );	
	virtual void setValueMiddle() = 0;

	virtual StrategyParameter* copy() const = 0;

protected:

	Type type;
};
